亚洲中文字幕无码AV,九九天天干人妻天天操天天玩,色欲久久国产色AV免费看老司,国产熟妇另类久久久久

【20年品牌建站】找北京網站建設公司就選新鴻儒/提供北京網站建設報價/北京網站制作/北京網站設計/網站開發、北京網站建設公司電話【400-024-1998】有優惠哦!
簡體
繁體 簡體
我們的服務遍布中國

我們的服務遍布中國
乃至世界

新鴻儒所服務的品牌地域與城市
北京 天津 上海 廣州 深圳 香港 廈門 江蘇 浙江 山東
重慶 長沙 武漢 成都 西安 寧夏 麗江 青海 云南 烏魯木齊
黑龍江 內蒙古 河北 ...
新鴻儒服務與合作的全球各地
美國 加拿大 德國 法國 英國 瑞士 意大利 荷蘭
印度 日本 韓國 ...

不論你的品牌在何處
我們都可以提供完善的服務與幫助

致電

400-024-1998

java網站建設2-spring dao講解

發布時間:2013-11-22 瀏覽:466打印字號:

Spring提供DAO支持的目的是以一致的方式使用不同的數據庫訪問技術

Spring把特定于某種技術的一場,如SQLException,轉化為自己的異常。這種異常以DataAccessException為根的異常層次。

使用JDBC進行數據訪問:

Spring至少提供三種不同的工作模式:JdbcTemplate,SimpleJdbc和RDBMS Object風格的面向對象封裝方式。

JdbcTemplate:最經典,最常用的Spring對于JDBC訪問的方案,也是最低級的封裝。其他方式以其作為實現基礎。

NamedParameterTemplate:對JdbcTemplate的封裝,提供了更加便捷的基于命名參數的使用方式而不是傳統的JDBC所使用的?作為參數占位符。

SimpleJdbcTemplate:結合JdbcTemplate和NamedParameterTemplate常用的功能,并利用Java5新特性帶來的優勢。

SimpleJdbcInsert和SimpleJdbcCall:

RDBMS對象:

Spring Framework的JDBC抽象框架包括:core,datasource,object和support四個包

JdbcTemplate使用:

JdbcTemplate是core包的核心類,替我們完成了資源的創建和釋放工作,讓我們避免了類似忘記關閉數據庫連接這樣的錯誤。

JdbcTemplate中使用的所有SQL會以DEBUG的級別記入日志。

JdbcTemplate優質實踐:

(1)JdbcTemplate是線程安全的,因此可以配置一個簡單的JdbcTemplate實例,將這個共享的實例注入到多個DAO類中。

(2)使用JdbcTemplate的一個優質實踐就是在配置文件中配置一個DataSource實例,然后將這個共享的DataSource注入到DAO中

(3)因為JdbcTemplate是線程安全的,所以無需創建多個JdbcTemplate實例,除非要連接多個數據庫。

DataSource接口:

Spring使用DataSource對象來完成獲取數據庫連接。

使用Spring JDBC時,既可以從JNDI獲取數據源,也可以自行配置數據源。

DBCP:DBCP是apache一個數據庫連接池項目,使用DBCP需要有三個包:COMMON-DBCP.JAR,COMMON-POOL.JAR和COMMON-COLLECTIONS.JAR

配置:

C3P0是一個開源的JDBC連接池,它實現了數據源和JNDI綁定。配置:

C3P0與DBCP的區別:dbcp沒有自動的去回收空閑連接的功能,C3P0有

Query:(select)

返回單值的查詢方法:

int rowCount = this.jdbcTemplate.queryForInt("select count(*) from t_actor");

int countOfActorsNamedJoe = this.jdbcTemplate.queryForInt("select count(*) from t_actor where first_name = ?", "Joe");

String lastName = this.jdbcTemplate.queryForObject("select last_name from t_actor where id = ?",
new Object[]{1212L}, String.class);

查詢并生成領域對象:

public List findAllActors() {
  return this.jdbcTemplate.query( "select first_name, last_name from t_actor", new ActorMapper());
}
private static final class ActorMapper implements RowMapper {
  public Actor mapRow(ResultSet rs, int rowNum) throws SQLException {
    Actor actor = new Actor();
    actor.setFirstName(rs.getString("first_name"));
    actor.setLastName(rs.getString("last_name"));
    return actor;
  }
}

返回多值的查詢方法:

private JdbcTemplate jdbcTemplate;
public void setDataSource(DataSource dataSource) {
  this.jdbcTemplate = new JdbcTemplate(dataSource);
}
public List> getList() {
  return this.jdbcTemplate.queryForList("select * from mytable");
}

update(update/insert/delete):

this.jdbcTemplate.update("insert into t_actor (first_name, last_name) values (?, ?)","Leonor", "Watling");

this.jdbcTemplate.update("update t_actor set = ? where id = ?","Banjo", 5276L);

this.jdbcTemplate.update("delete from actor where id = ?",Long.valueOf(actorId));

執行DDL:

this.jdbcTemplate.execute("create table mytable (id integer, name varchar(100))");

NamedParameterJdbcTemplate:

private NamedParameterJdbcTemplate namedParameterJdbcTemplate;
public void setDataSource(DataSource dataSource) {
   this.namedParameterJdbcTemplate = new NamedParameterJdbcTemplate(dataSource);
}
public int countOfActorsByFirstName(String firstName) {
  String sql = "select count(*) from T_ACTOR where first_name = :first_name";
  SqlParameterSource namedParameters = new MapSqlParameterSource("first_name", firstName);
  return namedParameterJdbcTemplate.queryForInt(sql, namedParameters);
}

SqlParameterSource有兩個實現,一個是MapSqlParameterSource,另一個是BeanPropertySqlParameterSource。

現在就與新鴻儒客服交流

400-024-1998

您也可進行在線咨詢或預約項目顧問
我要預約
在線咨詢